package siga.visao_financeiro;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JOptionPane;
import siga.banco.conexao;
import siga.navegadores.navegador;
import siga.visao.index;
import siga.visao.verErros;

public class movCaixaVer extends javax.swing.JInternalFrame {

    public movCaixaVer() {
        initComponents();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jpmTabela = new javax.swing.JPopupMenu();
        jmAbrir = new javax.swing.JMenuItem();
        jmFechar = new javax.swing.JMenuItem();
        jmTransfer = new javax.swing.JMenuItem();
        jpCaixaPrincipal = new javax.swing.JPanel();
        jtMenu = new javax.swing.JToolBar();
        jtControleCaixa = new javax.swing.JToolBar();
        jbAbrirCaixa = new javax.swing.JButton();
        jbFecharCaixa = new javax.swing.JButton();
        jbTransferirCaixa = new javax.swing.JButton();
        jtRelatorio = new javax.swing.JToolBar();
        jbRelatorio = new javax.swing.JToggleButton();
        jtControleSistema = new javax.swing.JToolBar();
        jbSair = new javax.swing.JButton();
        jpTabela = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jtBanco = new javax.swing.JTable();

        jpmTabela.setName("jpmTabela"); // NOI18N

        jmAbrir.setText("Abrir Caixa");
        jmAbrir.setName("jmAbrir"); // NOI18N
        jmAbrir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jmAbrirActionPerformed(evt);
            }
        });
        jpmTabela.add(jmAbrir);

        jmFechar.setText("Fechar Caixa");
        jmFechar.setName("jmFechar"); // NOI18N
        jpmTabela.add(jmFechar);

        jmTransfer.setText("Transferir Caixa");
        jmTransfer.setName("jmTransfer"); // NOI18N
        jpmTabela.add(jmTransfer);

        setClosable(true);
        setIconifiable(true);
        setMaximizable(true);
        setResizable(true);
        setTitle("Movimentação de Caixas");
        setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/siga/imagem/Caixa_16x16.png"))); // NOI18N
        addInternalFrameListener(new javax.swing.event.InternalFrameListener() {
            public void internalFrameActivated(javax.swing.event.InternalFrameEvent evt) {
                formInternalFrameActivated(evt);
            }
            public void internalFrameClosed(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameClosing(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameDeactivated(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameDeiconified(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameIconified(javax.swing.event.InternalFrameEvent evt) {
            }
            public void internalFrameOpened(javax.swing.event.InternalFrameEvent evt) {
            }
        });

        jpCaixaPrincipal.setName("jpCaixaPrincipal"); // NOI18N

        jtMenu.setFloatable(false);
        jtMenu.setRollover(true);
        jtMenu.setName("jtMenu"); // NOI18N

        jtControleCaixa.setRollover(true);
        jtControleCaixa.setName("jtControleCaixa"); // NOI18N

        jbAbrirCaixa.setIcon(new javax.swing.ImageIcon(getClass().getResource("/siga/imagem/caixa_abrir_32x32.png"))); // NOI18N
        jbAbrirCaixa.setText("Caixa Abrir");
        jbAbrirCaixa.setEnabled(false);
        jbAbrirCaixa.setFocusable(false);
        jbAbrirCaixa.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jbAbrirCaixa.setName("jbAbrirCaixa"); // NOI18N
        jbAbrirCaixa.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jbAbrirCaixa.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbAbrirCaixaActionPerformed(evt);
            }
        });
        jtControleCaixa.add(jbAbrirCaixa);

        jbFecharCaixa.setIcon(new javax.swing.ImageIcon(getClass().getResource("/siga/imagem/caixa_fechar_32x32.png"))); // NOI18N
        jbFecharCaixa.setText("Caixa Fechar");
        jbFecharCaixa.setEnabled(false);
        jbFecharCaixa.setFocusable(false);
        jbFecharCaixa.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jbFecharCaixa.setName("jbFecharCaixa"); // NOI18N
        jbFecharCaixa.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jbFecharCaixa.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbFecharCaixaActionPerformed(evt);
            }
        });
        jtControleCaixa.add(jbFecharCaixa);

        jbTransferirCaixa.setIcon(new javax.swing.ImageIcon(getClass().getResource("/siga/imagem/caixa_trasferencia_32x32.png"))); // NOI18N
        jbTransferirCaixa.setText("Caixa Transferir");
        jbTransferirCaixa.setEnabled(false);
        jbTransferirCaixa.setFocusable(false);
        jbTransferirCaixa.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jbTransferirCaixa.setName("jbTransferirCaixa"); // NOI18N
        jbTransferirCaixa.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jbTransferirCaixa.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbTransferirCaixaActionPerformed(evt);
            }
        });
        jtControleCaixa.add(jbTransferirCaixa);

        jtMenu.add(jtControleCaixa);

        jtRelatorio.setRollover(true);
        jtRelatorio.setName("jtRelatorio"); // NOI18N

        jbRelatorio.setIcon(new javax.swing.ImageIcon(getClass().getResource("/siga/imagem/relatorio_32x32.png"))); // NOI18N
        jbRelatorio.setText("Relatorio");
        jbRelatorio.setEnabled(false);
        jbRelatorio.setFocusable(false);
        jbRelatorio.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jbRelatorio.setName("jbRelatorio"); // NOI18N
        jbRelatorio.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jbRelatorio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbRelatorioActionPerformed(evt);
            }
        });
        jtRelatorio.add(jbRelatorio);

        jtMenu.add(jtRelatorio);

        jtControleSistema.setRollover(true);
        jtControleSistema.setName("jtControleSistema"); // NOI18N

        jbSair.setIcon(new javax.swing.ImageIcon(getClass().getResource("/siga/imagem/sair_32x32.png"))); // NOI18N
        jbSair.setText("Sair");
        jbSair.setFocusable(false);
        jbSair.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
        jbSair.setName("jbSair"); // NOI18N
        jbSair.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
        jbSair.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jbSairActionPerformed(evt);
            }
        });
        jtControleSistema.add(jbSair);

        jtMenu.add(jtControleSistema);

        jpTabela.setName("jpTabela"); // NOI18N

        jScrollPane1.setName("jScrollPane1"); // NOI18N

        jtBanco.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Código Caixa", "Nome do Caixa", "Saldo", "Situação"
            }
        ) {
            boolean[] canEdit = new boolean [] {
                false, false, false, false
            };

            public boolean isCellEditable(int rowIndex, int columnIndex) {
                return canEdit [columnIndex];
            }
        });
        jtBanco.setComponentPopupMenu(jpmTabela);
        jtBanco.setName("jtBanco"); // NOI18N
        jtBanco.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jtBancoMouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(jtBanco);
        jtBanco.getColumnModel().getColumn(0).setPreferredWidth(50);
        jtBanco.getColumnModel().getColumn(0).setMaxWidth(50);
        jtBanco.getColumnModel().getColumn(2).setPreferredWidth(70);
        jtBanco.getColumnModel().getColumn(2).setMaxWidth(70);
        jtBanco.getColumnModel().getColumn(3).setPreferredWidth(60);
        jtBanco.getColumnModel().getColumn(3).setMaxWidth(60);

        javax.swing.GroupLayout jpTabelaLayout = new javax.swing.GroupLayout(jpTabela);
        jpTabela.setLayout(jpTabelaLayout);
        jpTabelaLayout.setHorizontalGroup(
            jpTabelaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 706, Short.MAX_VALUE)
        );
        jpTabelaLayout.setVerticalGroup(
            jpTabelaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 502, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout jpCaixaPrincipalLayout = new javax.swing.GroupLayout(jpCaixaPrincipal);
        jpCaixaPrincipal.setLayout(jpCaixaPrincipalLayout);
        jpCaixaPrincipalLayout.setHorizontalGroup(
            jpCaixaPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jtMenu, javax.swing.GroupLayout.DEFAULT_SIZE, 706, Short.MAX_VALUE)
            .addComponent(jpTabela, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        jpCaixaPrincipalLayout.setVerticalGroup(
            jpCaixaPrincipalLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(jpCaixaPrincipalLayout.createSequentialGroup()
                .addComponent(jtMenu, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jpTabela, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jpCaixaPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jpCaixaPrincipal, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jbSairActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbSairActionPerformed
       movCaixaVer.this.setVisible(false);
       movCaixaVer.this.dispose();
}//GEN-LAST:event_jbSairActionPerformed

    private void formInternalFrameActivated(javax.swing.event.InternalFrameEvent evt) {//GEN-FIRST:event_formInternalFrameActivated
       CarregaTabela();
    }//GEN-LAST:event_formInternalFrameActivated

    private void jbAbrirCaixaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbAbrirCaixaActionPerformed
        if(jtBanco.getValueAt(jtBanco.getSelectedRow(), 3).equals("Fechado")){
            try {
                conexao.stm.executeUpdate("update usuarios_caixas set status=\"Aberto\" where cod_caixa="+jtBanco.getValueAt(jtBanco.getSelectedRow(), 0)+" and cod_usuario="+index.usuario[0]+" and cod_emp="+index.cod_emp+"");
                conexao.stm.executeUpdate("insert into fin_caixa_mov(cod_emp,cod_usuario,cod_caixa,dt_abrir,saldo_inicial,status) values("+index.cod_emp+","+index.usuario[0]+","+jtBanco.getValueAt(jtBanco.getSelectedRow(), 0)+",now(),0.00,\"Aberto\")");
                CarregaTabela();
                Botoes();
            } catch (SQLException ex) {
                verErros.setErro(ex.getMessage());
            }
        }else{
            JOptionPane.showMessageDialog(null, "O "+jtBanco.getValueAt(jtBanco.getSelectedRow(), 1)+" já esta "+jtBanco.getValueAt(jtBanco.getSelectedRow(), 3)+".");
        }

    }//GEN-LAST:event_jbAbrirCaixaActionPerformed

    private void jtBancoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jtBancoMouseClicked
        if(!jbAbrirCaixa.isEnabled()){
            Botoes();
        }
    }//GEN-LAST:event_jtBancoMouseClicked

    private void jmAbrirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jmAbrirActionPerformed
        jbAbrirCaixaActionPerformed(evt);
    }//GEN-LAST:event_jmAbrirActionPerformed

    private void jbFecharCaixaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbFecharCaixaActionPerformed
        double saldo;
        if(jtBanco.getValueAt(jtBanco.getSelectedRow(), 3).equals("Aberto")){
            try {
                conexao.stm.executeUpdate("update usuarios_caixas set status=\"Fechado\" where cod_caixa="+jtBanco.getValueAt(jtBanco.getSelectedRow(), 0)+" and cod_usuario="+index.usuario[0]+" and cod_emp="+index.cod_emp+"");
                conexao.Query("select SUM(fr.valor_pago) as saldo from fin_contas_mov_r fr " +
                              "inner join fin_caixa_mov fm on fm.cod_caixa=fr.cod_caixa and fm.cod_usuario=fr.cod_usuario and fm.cod_emp=fr.cod_emp " +
                              "where fr.cod_emp="+index.cod_emp+" and fr.cod_usuario="+index.usuario[0]+" and fr.cod_caixa="+jtBanco.getValueAt(jtBanco.getSelectedRow(), 0)+" and fm.status=\"Aberto\" and (fr.dt_pagamento BETWEEN fm.dt_abrir and now())");
                conexao.rs.next();
                saldo = conexao.rs.getDouble("saldo");
                if(saldo<=0){saldo=0.00;}
                conexao.stm.executeUpdate("update fin_caixa_mov set dt_usuario_fechar=now(),dt_fechar=now(), saldo_final="+saldo+", status=\"Fechado\" where cod_usuario="+index.usuario[0]+"  and cod_emp="+index.cod_emp+" and cod_caixa="+jtBanco.getValueAt(jtBanco.getSelectedRow(), 0)+" and status=\"Aberto\"");
                conexao.stm.executeUpdate("update fin_caixa set banco_vl_atual=(banco_vl_atual+"+saldo+") where cod_emp="+index.cod_emp+" and codigo="+jtBanco.getValueAt(jtBanco.getSelectedRow(), 0)+"");
                conexao.FechaConexao();
                Botoes();
            } catch (SQLException ex) {
                verErros.setErro(ex.getMessage());
            }
        }else{
            JOptionPane.showMessageDialog(null, "O "+jtBanco.getValueAt(jtBanco.getSelectedRow(), 1)+" já esta "+jtBanco.getValueAt(jtBanco.getSelectedRow(), 3)+".");
        }
    }//GEN-LAST:event_jbFecharCaixaActionPerformed

    private void jbTransferirCaixaActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbTransferirCaixaActionPerformed
            java.awt.Dimension tela = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
            movTransfCaixa mtc = new movTransfCaixa(null,true);
            mtc.setLocation((tela.width-mtc.getWidth())/2, (tela.height-mtc.getHeight())/2);
            mtc.setVisible(true);
            if(movTransfCaixa.isConfirmaAcao()){
                 Botoes();
                 CarregaTabela();
            }
    }//GEN-LAST:event_jbTransferirCaixaActionPerformed
    public void Botoes(){
        jbAbrirCaixa.setEnabled(!jbAbrirCaixa.isEnabled());
        jbFecharCaixa.setEnabled(!jbFecharCaixa.isEnabled());
        jbTransferirCaixa.setEnabled(!jbTransferirCaixa.isEnabled());
        jbRelatorio.setEnabled(!jbRelatorio.isEnabled());
    }
    private void jbRelatorioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jbRelatorioActionPerformed
        try {
            conexao.Query("Select sysdate() as data");
            conexao.rs.next(); 
            String dataf = new SimpleDateFormat("dd/MM/yyyy").format(conexao.rs.getDate("data"));
            conexao.Query("select dt_abrir from fin_caixa_mov where cod_usuario="+index.usuario[0]+" and cod_emp="+index.cod_emp+" and cod_caixa="+jtBanco.getValueAt(jtBanco.getSelectedRow(), 0).toString()+" order by codigo desc limit 1");
            conexao.rs.next();
            String datai = (conexao.rs.getDate("dt_abrir") != null) ? new SimpleDateFormat("dd/MM/yyyy").format(conexao.rs.getTimestamp("dt_abrir")) : new SimpleDateFormat("dd/MM/yyyy").format(new Date());
            navegador.URL("http://201.35.207.198/sistema/relatorios/fin_fluxo_caixa.php?cod_emp="+index.cod_emp+
                    "&cod_user="+index.usuario[0]+"&datai="+datai+"&dataf="+dataf+"&cod_caixa="+jtBanco.getValueAt(jtBanco.getSelectedRow(), 0).toString());
        } catch (SQLException ex) {
            verErros.setErro(ex.getMessage());
        }
       
    }//GEN-LAST:event_jbRelatorioActionPerformed

    public void CarregaTabela(){
        try {
            javax.swing.table.DefaultTableModel jtb = (javax.swing.table.DefaultTableModel) jtBanco.getModel();
            for (int x = jtBanco.getRowCount() - 1; x >= 0; --x) {
                jtb.removeRow(x);
            }
            conexao.Query("select uc.status, fc.descricao, fc.banco_vl_atual, fc.codigo from usuarios_caixas uc inner join fin_caixa fc on fc.codigo=uc.cod_caixa and fc.cod_emp=uc.cod_emp where uc.cod_usuario=" + index.usuario[0] + " and fc.cod_emp=" + index.cod_emp + " order by fc.descricao");
            while (conexao.rs.next()) {
                jtb.addRow(new Object[]{conexao.rs.getString("codigo"), conexao.rs.getString("descricao"), index.ftbr.format(conexao.rs.getDouble("banco_vl_atual")), conexao.rs.getString("status")});
            }
        } catch (SQLException ex) {
            verErros.setErro(ex.getMessage());
        }
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JButton jbAbrirCaixa;
    private javax.swing.JButton jbFecharCaixa;
    private javax.swing.JToggleButton jbRelatorio;
    private javax.swing.JButton jbSair;
    private javax.swing.JButton jbTransferirCaixa;
    private javax.swing.JMenuItem jmAbrir;
    private javax.swing.JMenuItem jmFechar;
    private javax.swing.JMenuItem jmTransfer;
    private javax.swing.JPanel jpCaixaPrincipal;
    private javax.swing.JPanel jpTabela;
    private javax.swing.JPopupMenu jpmTabela;
    private javax.swing.JTable jtBanco;
    private javax.swing.JToolBar jtControleCaixa;
    private javax.swing.JToolBar jtControleSistema;
    private javax.swing.JToolBar jtMenu;
    private javax.swing.JToolBar jtRelatorio;
    // End of variables declaration//GEN-END:variables

}
